home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Software für Mac-OS X / Entwickler-Tools / netbeans / modules / ext / djava.jar / koala / dynamicjava / parser / ParseException.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-03-14  |  2.8 KB  |  124 lines

  1. package koala.dynamicjava.parser;
  2.  
  3. public class ParseException extends Exception {
  4.    protected boolean specialConstructor;
  5.    public Token currentToken;
  6.    public int[][] expectedTokenSequences;
  7.    public String[] tokenImage;
  8.    protected String eol = System.getProperty("line.separator", "\n");
  9.  
  10.    public String getMessage() {
  11.       if (!this.specialConstructor) {
  12.          return super.getMessage();
  13.       } else {
  14.          String var1 = "";
  15.          int var2 = 0;
  16.  
  17.          for(int var3 = 0; var3 < this.expectedTokenSequences.length; ++var3) {
  18.             if (var2 < this.expectedTokenSequences[var3].length) {
  19.                var2 = this.expectedTokenSequences[var3].length;
  20.             }
  21.  
  22.             for(int var4 = 0; var4 < this.expectedTokenSequences[var3].length; ++var4) {
  23.                var1 = var1 + this.tokenImage[this.expectedTokenSequences[var3][var4]] + " ";
  24.             }
  25.  
  26.             if (this.expectedTokenSequences[var3][this.expectedTokenSequences[var3].length - 1] != 0) {
  27.                var1 = var1 + "...";
  28.             }
  29.  
  30.             var1 = var1 + this.eol + "    ";
  31.          }
  32.  
  33.          String var6 = "Encountered \"";
  34.          Token var10 = this.currentToken.next;
  35.  
  36.          for(int var5 = 0; var5 < var2; ++var5) {
  37.             if (var5 != 0) {
  38.                var6 = var6 + " ";
  39.             }
  40.  
  41.             if (var10.kind == 0) {
  42.                var6 = var6 + this.tokenImage[0];
  43.                break;
  44.             }
  45.  
  46.             var6 = var6 + this.add_escapes(var10.image);
  47.             var10 = var10.next;
  48.          }
  49.  
  50.          var6 = var6 + "\" at line " + this.currentToken.next.beginLine + ", column " + this.currentToken.next.beginColumn + "." + this.eol;
  51.          if (this.expectedTokenSequences.length == 1) {
  52.             var6 = var6 + "Was expecting:" + this.eol + "    ";
  53.          } else {
  54.             var6 = var6 + "Was expecting one of:" + this.eol + "    ";
  55.          }
  56.  
  57.          var6 = var6 + var1;
  58.          return var6;
  59.       }
  60.    }
  61.  
  62.    protected String add_escapes(String var1) {
  63.       StringBuffer var2 = new StringBuffer();
  64.  
  65.       for(int var4 = 0; var4 < var1.length(); ++var4) {
  66.          switch (var1.charAt(var4)) {
  67.             case '\u0000':
  68.                break;
  69.             case '\b':
  70.                var2.append("\\b");
  71.                break;
  72.             case '\t':
  73.                var2.append("\\t");
  74.                break;
  75.             case '\n':
  76.                var2.append("\\n");
  77.                break;
  78.             case '\f':
  79.                var2.append("\\f");
  80.                break;
  81.             case '\r':
  82.                var2.append("\\r");
  83.                break;
  84.             case '"':
  85.                var2.append("\\\"");
  86.                break;
  87.             case '\'':
  88.                var2.append("\\'");
  89.                break;
  90.             case '\\':
  91.                var2.append("\\\\");
  92.                break;
  93.             default:
  94.                char var3;
  95.                if ((var3 = var1.charAt(var4)) >= ' ' && var3 <= '~') {
  96.                   var2.append(var3);
  97.                } else {
  98.                   String var5 = "0000" + Integer.toString(var3, 16);
  99.                   var2.append("\\u" + var5.substring(var5.length() - 4, var5.length()));
  100.                }
  101.          }
  102.       }
  103.  
  104.       return var2.toString();
  105.    }
  106.  
  107.    public ParseException(Token var1, int[][] var2, String[] var3) {
  108.       super("");
  109.       this.specialConstructor = true;
  110.       this.currentToken = var1;
  111.       this.expectedTokenSequences = var2;
  112.       this.tokenImage = var3;
  113.    }
  114.  
  115.    public ParseException() {
  116.       this.specialConstructor = false;
  117.    }
  118.  
  119.    public ParseException(String var1) {
  120.       super(var1);
  121.       this.specialConstructor = false;
  122.    }
  123. }
  124.